package com.wu.leetcode.leetcode38;

/**
 * Leetcode38-外观数列
 * 1.     1
 * 2.     11
 * 3.     21
 * 4.     1211
 * 5.     111221
 * 第一项是数字 1
 * 描述前一项，这个数是 1 即 “一个 1 ”，记作 11
 * 描述前一项，这个数是 11 即 “两个 1 ” ，记作 21
 * 描述前一项，这个数是 21 即 “一个 2 一个 1 ” ，记作 1211
 * 描述前一项，这个数是 1211 即 “一个 1 一个 2 两个 1 ” ，记作 111221
 *
 */
class Solution {
    public  String countAndSay(int n) {
        String str = "1";
        for (int i = 2; i <= n; i++) {
            //获取第一个字符
            char pre = str.charAt(0);
            //索引
            int count = 1;
            StringBuilder builder = new StringBuilder();
            for (int j = 1; j < str.length(); j++) {
                char c = str.charAt(j);
                if (c == pre){
                    count++;
                }else {
                    builder.append(count).append(pre);
                    pre = c;
                    count = 1;
                }
            }
            builder.append(count).append(pre);
            str = builder.toString();
        }
        return str;
    }
}